home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 2: CDPD 1 / Almathera Ten on Ten - Disc 2: CDPD 1.iso / pd / 151-175 / 169 / src / shell / hat.c < prev    next >
C/C++ Source or Header  |  1995-03-13  |  992b  |  45 lines

  1.  
  2. /*
  3.  *    HAT.C
  4.  *
  5.  *    Modify the last history entry ^search^replace.  Called from
  6.  *    MAIN.C
  7.  *
  8.  */
  9.  
  10. extern char *last_history_entry();
  11.  
  12. hat_replace(buf)
  13. char *buf;
  14. {
  15.     char res[256];
  16.     char *ptr, *hb, *repstr, *srchstr;
  17.     int searchlen, replacelen;
  18.  
  19.     srchstr = buf + 1;
  20.     for (repstr = srchstr; *repstr && *repstr != '^'; ++repstr);
  21.     if (*repstr) {
  22.     searchlen = repstr - srchstr;
  23.     *repstr = '\0';
  24.     ++repstr;
  25.     }
  26.     replacelen = strlen(repstr);
  27.  
  28.     for (ptr = hb = last_history_entry(); *ptr; ++ptr) {
  29.     if (strncmp(ptr, srchstr, searchlen) == 0) {
  30.         bmov(hb, res, ptr - hb);         /* first part of history    */
  31.         res[ptr-hb] = '\0';              /* add 0                   */
  32.         strcat(res, repstr);         /* add replace string    */
  33.         strcat(res, ptr+searchlen);      /* add rest of history    */
  34.         strcpy(buf, res);             /* copy            */
  35.         puts (buf);
  36.         return(1);                 /* done            */
  37.     }
  38.     }
  39.     puts ("modifier failed");
  40.     *buf = '\0';
  41.     return(0);
  42. }
  43.  
  44.  
  45.